package com.example.leetcode.c201_c300.c226;
/**
 * 翻转一棵二叉树。
 *
 * 示例：
 *
 * 输入：
 *
 *      4
 *    /   \
 *   2     7
 *  / \   / \
 * 1   3 6   9
 * 输出：
 *
 *      4
 *    /   \
 *   7     2
 *  / \   / \
 * 9   6 3   1
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/invert-binary-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */


import com.example.leetcode.common.TreeNode;
import com.example.leetcode.common.TreeOperate;

/**
 * 翻转二叉树
 * @author zhanpengguo
 * @date 2019-08-16 11:00
 */
public class Solution {
    public static TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        invertTree(root.left);
        invertTree(root.right);
        return root;
    }

    public static void main(String[] args) {
        int[] ints = {4, 2, 7, 1, 3, 6, 9};
        TreeNode treeNode = TreeOperate.create1(ints);
        TreeOperate.preOrder(treeNode);
        System.out.println();
        treeNode = invertTree(treeNode);
        TreeOperate.preOrder(treeNode);
    }
}
